package org.zxyj.manage.service;

import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Map;

import org.zxyj.manage.entity.CourseTemplateArea;

public interface IPointRecognitionService
{
	/**
	 * 识别客观题答案
	    * @Title: recognitionObjectiveAnswer
	    * @param @param image
	    * @param @param record
	    * @param @param params
	    * @param @return
	    * @param @throws IOException    参数
	    * @return Map<String,String>    返回类型
	    * @throws
	 */
    Map<String,String> recognitionObjectiveAnswer(BufferedImage image,CourseTemplateArea record,Map<String, Integer> params) throws IOException;
    
    /**
     * 计算区域块有效宽度和高度
     * @param image 图片流
     * @param type 0:小区域面积 1：大区域面积
     * @return
     * @throws IOException
     * @see [类、类#方法、类#成员]
     * @since [产品/模块版本]
     */
    Map<String, Object> getAreaResult(BufferedImage image,int type) throws IOException;
    
    /**
     * 识别缺考区域
     * @param image 图片流
     * @param singleWidth 单个小块宽度
     * @param singleHeight 单个小块高度
     * @param rows 行数
     * @param cols 列数
     * @param blank_x 列间距
     * @param blank_y 行间距
     * @return
     * @throws IOException
     * @see   [类、类#方法、类#成员]
     * @since [产品/模块版本]
     */
    boolean recognitionQk(BufferedImage image, int singleWidth,int singleHeight, int rows, int cols, int blank_x, int blank_y) throws IOException;
    
    /**
     * 识别考生编号
     * @param image 图片流
     * @param area_width 区域宽度
     * @param area_height 区域高度
     * @param kh_start_x X轴偏移量
     * @param kh_start_y Y轴偏移量
     * @param singleWidth 单个小块区域宽度
     * @param singleHeight 单个区域小块高度
     * @param rows 行数
     * @param cols 列数
     * @return
     * @throws IOException
     * @see   [类、类#方法、类#成员]
     * @since [产品/模块版本]
     */
    Map<String, String> recognitionKsbh(Map<String,Object> params) throws IOException;
    /*Map<String, String> recognitionKsbh(BufferedImage image,
    		int area_width, int area_height, int kh_start_x, int kh_start_y,
    		int singleWidth, int singleHeight, int rows, int cols) throws IOException;*/
    
    
    /**
     * 获取3个考号填涂区标准宽度和高度
     * @param params1 区域1
     * @param params2 区域2
     * @param params3 区域3
     * @return
     * @throws IOException
     * @see   [类、类#方法、类#成员]
     * @since [产品/模块版本]
     */
    Map<String,Object> getAreaWidthHeight(Map<String,Object> params) throws IOException;
    
    /**
     * 获取单个填涂区标准宽度和高度
     * @param params 参数集
     * @return
     * @throws IOException
     * @see   [类、类#方法、类#成员]
     * @since [产品/模块版本]
     */
    Map<String,Object> getSingleAreaWidthHeight(Map<String,Object> params) throws IOException;
    
    /**
     * 获取考号区域实际宽度和高度
     * @param params 参数集
     * @return
     * @throws IOException
     * @see   [类、类#方法、类#成员]
     * @since [产品/模块版本]
     */
    Map<String,Object> getKhAreaWidthHeight(Map<String,Object> params) throws IOException;
    
}
